都是虚拟语气.但是使用的场景不同.
might have been 多用于猜测,比如:
He might have been to Beijing.他大概去过北京.
You might have said this before.(猜想)你也曾说过这些话.
could have been多用于原本可以(能力上可及)的事情却没有做.比如:
I could have caught up with you. 我本来可以来和你们聚会的(但却没有去).
I could have been upset.我本来应该不高兴的(但是没有)